from typing import List


class Solution:
    _MOD = 10 ** 9 + 7

    def sumSubseqWidths(self, nums: List[int]) -> int:
        nums.sort()

        ans = 0
        for i, num in enumerate(nums):
            ans += pow(2, (i + 1) - 1, mod=self._MOD) * num  # 这个数被当作最大值的次数
            ans -= pow(2, (len(nums) - i) - 1, mod=self._MOD) * num  # 这个数被当作最小值的次数
            ans %= self._MOD
        return ans


if __name__ == "__main__":
    print(Solution().sumSubseqWidths([2, 1, 3]))  # 6

    # 测试用例4/64
    print(Solution().sumSubseqWidths([7, 8, 8, 10, 4]))  # 96
